The purpose of the memory footprint of this invention is to provide the computer user with a convenient and efficient way to determine the actual path, when a program deviates from its expected path.
Traditional program debugging was done by hand execution of the program and occasional memory dumps to trace a program's progress. As programs became more complex and lengthy, a post-mortem dump was practical in all but the most persistent programming problems. In these cases it was necessary to tie up a computer (computer costs of $600/hr are not unusual) while the programmer executed the program at a humanly comprehendable speed, which is about one millionth the speed of which the machine is capable. The faster the machine, the more inefficient it is for a human to follow the program.
An automated technique for tracing deviant programs is known as a virtual machine, where each instruction is executed by the software of a virtual machine running in the hardware of the real machine. This interpretive execution requires several instruction executions for each instruction of the actual program to be run. Again the machine is being under-utilized due to the software overhead. No satisfactory scheme is available for real time applications. This is for several reasons: (1) The speed requirements do not often allow the virtual machine approach due to the execution inefficiency. (2) Even when a process can be run in a virtual machine it is not practical for standard operating procedures. (3) Real time situations cannot be easily, if ever, identically repeated to isolate a problem. This is especially true of multiprogramming and interruptable coding.